// package com.xinxing.learning.security.config;
//
// import com.fasterxml.jackson.annotation.JsonAutoDetect;
// import com.fasterxml.jackson.annotation.PropertyAccessor;
// import com.fasterxml.jackson.databind.ObjectMapper;
// import org.springframework.context.annotation.Bean;
// import org.springframework.context.annotation.Configuration;
// import org.springframework.data.redis.connection.RedisConnectionFactory;
// import org.springframework.data.redis.core.RedisTemplate;
// import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
// import org.springframework.data.redis.serializer.StringRedisSerializer;
//
// @Configuration
// public class RedisConfig {
//
//     @Bean
//     @SuppressWarnings("all")
//     public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
//         //先改成<String, Object>类型
//         RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
//         template.setConnectionFactory(factory);
//
//         //Json序列化配置
//         //1、json解析任意的对象（Object）,变成json序列化
//         Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
//         //用ObjectMapper进行转义
//         ObjectMapper om = new ObjectMapper();
//         om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
//         //该方法是指定序列化输入的类型，就是将数据库里的数据按照一定类型存储到redis缓存中。
//         om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
//         jackson2JsonRedisSerializer.setObjectMapper(om);
//         //2、String的序列化
//         StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
//
//         // key采用String的序列化方式
//         template.setKeySerializer(stringRedisSerializer);
//         // hash的key也采用String的序列化方式
//         template.setHashKeySerializer(stringRedisSerializer);
//         // value序列化方式采用jackson
//         template.setValueSerializer(jackson2JsonRedisSerializer);
//         // hash的value序列化方式采用jackson
//         template.setHashValueSerializer(jackson2JsonRedisSerializer);
//         template.afterPropertiesSet();
//
//         return template;
//     }
// }
//
